iT邦幫忙

2023 iThome 鐵人賽

DAY 3
0
AI & Data

AI白話文運動系列之「A!給我那張Image!」系列 第 3

理想跟現實不一樣有甚麼損失?AI的訓練目標--損失函數

  • 分享至 

  • xImage
  •  

經過前兩天的內容,大家對於如何訓練一個AI模型應該有一些基礎的概念,不外乎就是要有個預期的目標,然後利用一些工具,根據輸出結果與預期目標的差異更新所有的參數。不過,在昨天的最後,我有留個懸念給大家:這樣的差異要如何衡量?不同情境要使用哪些差異?這也是我們今天會討論的內容。

先備知識

  1. 高中機率
  2. 指數對數(至少需要知道Log的運算)
  3. 集合論(至少需要知道交集與聯集的計算)

經過今天的內容你會知道...

  1. AI主流的影像任務有哪些
  2. AI影像任務所使用的訓練目標為何

一、AI模型的任務

  • 現在有許多不同種類的AI模型,用來處理不同的任務,或者說使用在不同的情境中,例如:人臉辨識AI,可以用來建立人臉打卡系統,每個人上班前刷一下人臉就可以自動打卡;自駕車道路偵測系統,用來告訴車子哪些可供行駛,哪些地方不能行駛,亦或者是最近很熱門的語言生成模型chatGPT,可以根據你所輸入的內容,產生出相對應的內容來回覆你,實現跟AI的對話。
  • 在影像相關的AI模型主要有三大任務:分類、偵測與分割,如下圖所示,分類任務是判斷輸入影像是哪一類,就好比上面舉例的人臉辨識,也可歸納成這一類;偵測任務是找出指定目標的範圍,也就是「分類+定位」,不僅要找出目標,還需要框出來,就像是利用監視器在追捕犯人的行蹤一樣;分割任務的話則是將感興趣的目標物分離出來,也就是「像素級的分類」,把每一個影像當中的像素都分類為「種類1」「種類2」...「其他」,這種類型的問題很常出現在醫療影像任務中,可以協助醫生找出有病變的部分。
  • https://ithelp.ithome.com.tw/upload/images/20230918/20163299zvMl8eEqld.png

二、分類任務

  • 在眾多影像任務中,分類任務是最好入門也是最廣泛的任務,在給定一張輸入影像之後,AI模型需要告訴我們這張影像是屬於哪個類別,就好比你今天去動物園參觀,遇到每一個動物你都需要正確地說出他是甚麼動物。
  • 可是問題來了,「類別」跟「影像」要如何聯繫在一起?這就需要使用到一個概念:熵(Entropy)。
  • 根據定義,熵被用來描述資訊的混亂程度,同時也可以代表記錄一個東西所需要的資訊量,為甚麼呢?我們可以試想一下,如果今天一個東西的資訊越混亂,代表我需要使用更多的資訊才能正確地記錄這個東西的狀態,可是如果是一個資訊混亂程度較低的東西,我只需要使用少量的資訊就可以完全記錄下來了。
  • 用數學來表示的話,我們會用下面的公式來描述,就是把一個東西的所有種狀態考慮進去,然後把所有狀態發生的機率乘上該狀態的資訊量後加總起來:
  • https://chart.googleapis.com/chart?cht=tx&chl=%5Cbegin%7Balign%7D%20H(X)%20%26%3D%20-%5Csum_%7Bi%3D1%7D%5E%7Bn%7D%20P(x_i)%20%5Clog_b%20P(x_i)%20%5C%5C%20%26%3D%20%5Csum_%7Bi%3D1%7D%5E%7Bn%7D%20P(x_i)%20%5Clog_b%20%5Cfrac%7B1%7D%7BP(x_i)%7D%20%5Cend%7Balign%7D
  • 更多的細節可以參考https://zh.wikipedia.org/zh-tw/%E7%86%B5(%E4%BF%A1%E6%81%AF%E8%AE%BA) 的定義
  • 介紹完熵之後,正式回到我們的問題,假設今天動物園裡面有30種動物,我要如何判斷我的輸出結果是否與實際的類別一致呢?如果不一致的話,我又要如何衡量這樣的差異呢?
  • 這就需要使用到另外一個概念:交叉熵(Cross-entropy),也就是https://chart.googleapis.com/chart?cht=tx&chl=H(y%2C%20%5Chat%7By%7D)%20%3D%20-%5Csum_%7Bi%3D1%7D%5E%7Bn%7D%20y_i%20%5Clog(%5Chat%7By%7D_i)
  • 與熵的公式不同,這邊同時考慮了兩個變數,這是因為我們需要利用交叉熵來衡量兩個機率分布之間的差異有多大,以上面的公式為例,我們希望讓https://chart.googleapis.com/chart?cht=tx&chl=%5Chat%7By%7D_i 能夠更靠近y,當兩者相當時,交叉熵為0,若是不相等時,依照不相等的程度會越來越大,也就是完全不同時交叉熵最大。
  • 「我們實際在使用AI模型時,不會只輸出最後預測出來的類別,而是輸出所有類別的機率」,最後看哪個機率最高,我就把它當成是最後預測出來的類別,所以在分類任務中,我們會使用交叉熵來衡量我們輸出結果是否正確,接著就可以根據不正確的程度多寡,使用昨天提過的梯度下降法來調整模型參數。
  • 對這個部分感興趣的人可以參考這兩個內容,裡面有更多的例子說明如何使用交叉熵來訓練模型:https://r23456999.medium.com/%E4%BD%95%E8%AC%82-cross-entropy-%E4%BA%A4%E5%8F%89%E7%86%B5-b6d4cef9189d 以及 https://zhuanlan.zhihu.com/p/149186719

三、偵測任務

  • 偵測任務所使用的訓練目標,也就是損失函數,相較於分類任務來說比較好理解,正如一開始我們使用的圖,偵測任務需要給出一個範圍框,把目標物體框出來。通常,在電腦中,我們會使用兩種方式描述一個框:(點1,點2,點3,點4)以及(點a,點b,長,寬),其中的點1到點4對應邊框的四個點頂,而點a與點b則是對角線上的兩個頂點。
  • 所以,如果要確認這些座標是否正確的話,這就是個統計回歸的問題,因此我們只需要使用Regression loss function即可,例如Mean squared error (MSE):https://chart.googleapis.com/chart?cht=tx&chl=MSE%20%3D%20%5Cfrac%7B1%7D%7Bn%7D%5Csum_%7Bi%3D1%7D%5E%7Bn%7D(y_i%20-%20%5Chat%7By%7D_i)%5E2
  • 延伸閱讀:https://chih-sheng-huang821.medium.com/%E6%A9%9F%E5%99%A8-%E6%B7%B1%E5%BA%A6%E5%AD%B8%E7%BF%92-%E5%9F%BA%E7%A4%8E%E4%BB%8B%E7%B4%B9-%E6%90%8D%E5%A4%B1%E5%87%BD%E6%95%B8-loss-function-2dcac5ebb6cb
  • 現在有個新的問題,上面的方法是把一個物件框的四個頂點或是其長寬等資訊視為獨立的變數,可是這些因素彼此間應該是會相互影響才對,因此另外一種訓練目標就是建立在這樣的想法之上,考慮的是「面積」,而非單純的點與線是否正確,這個部分使用到的是Intersection over Union(IOU):https://chart.googleapis.com/chart?cht=tx&chl=IoU%20%3D%20%5Cfrac%7BArea%20of%20Intersection%7D%7BArea%20of%20Union%7D
  • 其中,感興趣的面積就是預測出來的物件框的面積與實際物件框應框住的區域的交集,分母則是兩者個聯集,所以當兩者重疊的面積越大,IOU就會越接近1。
  • 這個部分同樣有一些延伸閱讀的內容可以參考,雖然都是從IOU這個概念出發,不過經過不同的調整之後會有各自的優缺點與使用情境:https://zhuanlan.zhihu.com/p/159209199 以及 https://zhuanlan.zhihu.com/p/94799295

四、分割任務

  • 分割任務雖然我們常常將其與前兩種任務分開討論,但是其實分割任務可以看成是像素級的分類任務,也就是我現在不單單是判斷整張圖片的類別,我還需要精確判斷出每個像素的類別。
  • 為了處理這樣的任務,我們可以使用分類任務的交叉熵,也可以延伸出更複雜的訓練目標,因為在分割任務中,不是所有物件都值得我們花同樣的精力關注,我們更注意那些與我們任務目標更相關的物件,舉例來說,最上面的圖中,我們可能會注意到狗或房子,可是不會去注意後方的雲跟草地。因此,如果能針對不同物件單獨考慮其分類的正確性,應該會更貼近我們想要做的事情,不過這個部分有許多內容可以著墨的,我們留到明天接著來談。

五、總結

  • 今天的內容中,我們介紹了AI的三大主流影像任務,並且討論了他們各自的訓練目標。不過,這邊同樣有個問題留個懸念給大家思考,我能不能自己設計訓練目標,我一定要使用人家設計好的目標嗎?如果我要做分類任務,我一定只能使用交叉熵嗎?若是在我的應用當中有一些額外的特性需要考慮,我要如何設計我的訓練目標呢?
  • 這些問題會在明天的內容中討論,大家可以一邊看今天的延伸閱讀一邊思考,希望經過每一天的內容,能夠讓你更靠近AI這個領域一點!

上一篇
AI的關鍵利器--梯度下降法在Pytorch中的運作方式
下一篇
理想跟現實不一樣有甚麼損失?番外篇(客製化AI訓練目標--正則化器)
系列文
AI白話文運動系列之「A!給我那張Image!」30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言